package main

import "fmt"

func main()  {

	//map  初始化与定义  maps是 一个 引用类型

	// (1)声明一个  map
	var map1 map[int]string  //值为 nil 还没有初始化
	//在创建 map
	map1=make(map[int]string)

    // (2)使用make 创建一个map
	var map2=make(map[int]string)

	//(3)声明并初始化
	var map3=map[string]int{"GO":98,"Ptdfd":98,"java":798}

	fmt.Println(map1,map2,map3)   //map[] map[] map[GO:98 Ptdfd:98 java:798]

	var map4 map[int]string
	if map4 == nil {
		fmt.Println("map4==nil")   // map4==nil
	}
	//对map4初始化 并存值
	map4=make(map[int]string)
	map4[1]="hello"
	map4[2]="fdsfd"
	map4[3]="sfsdfs"
	map4[4]="fdsfsdfsdf"

	fmt.Println(map4)   //  map[1:hello 2:fdsfd 3:sfsdfs 4:fdsfsdfsdf]


	// 判断  map4 key为1的map 是否存在值
	value,ok :=map4[1]
	fmt.Println(value,ok)   // hello true

	//修改值
	map4[3]="dddddd"
	fmt.Println(map4[3])

	//删除数据  根据map名称和  key来删除数据
	delete(map4,2)
	fmt.Println(map4)

	//长度
	fmt.Println(len(map4))   // 3

fmt.Println("=============遍历map================")
	// 遍历 map
	for k,v :=range map4{
		fmt.Println(k,v)
	}
}